Data that represents command information, audio data, video data, and other types of information are often transmitted from one chip to another and even intra-chip. For example, a data transmitter may receive outgoing data that is to be transmitted on a bus that may have a large number of data lines for carrying the data. Many buses are configured to carry high data rate communications that exceed 1 Gb per second. Typically, the transmitter generates a plurality of ones and zeros on the bus representing the data that is then received and processed at a receiving end of the bus.
Because, especially at these frequencies, line capacitance requires energy to charge or discharge a logic state presented on the line, a notable cumulative amount of power is consumed from changing logic states of the data on the data lines.
Systems have been developed to reduce the number of transitions required to convey data over communication buses. One problem, however, is that such systems either are overly simplistic and not as effective as desired or, conversely, are complicated and consume large amounts of power as well as integrated circuit real estate. For example, if a number of bus toggles exceeds 50 percent of the data lines, then bus inversion coding may be used to reduce the number toggles and, therefore, to save energy. It should be understood, however, that if coding occurs, a receiver must receive a signal indicating that coding has been performed so that the received data may properly be interpreted or extrapolated.
The use of the same reference symbols in different drawings indicates similar or identical items. Unless otherwise noted, the word “coupled” and its associated verb forms include both direct connection and indirect electrical connection by means known in the art, and unless otherwise noted any description of direct connection implies alternate embodiments using suitable forms of indirect electrical connection as well.